Suggested React Libraries

Here are some common problems and requirements and the libraries Vokal recommends for addressing them.

State Management

redux is the current gold standard for apps that require complex state management. If state is simple enough, building the app with Flux architecture in mind could be sufficient.

Asynchronous Actions

This is sticky issue – asynchronous actions muck up the tidy, deterministic, synchronous state management accomplished by Redux. There is no perfect solution to this problem, but Vokal has generally used Redux Thunk to address this, as suggested by the official Redux documentation for async actions.

However, alternatives exist that may be more suited to particular situations, including:

Whichever option you choose, take into consideration the points raised in the recommended reading below:

Routing

react-router - Far and away the most supported routing solution.

Normalization

Storing deeply nested objects is really gross with React state management, especially when using Redux. Normalizr helps to destructure deeply nested JSON objects into discrete elements that can be referenced by IDs elsewhere, keeping all your state objects nice and flat.

Composing Data from Multiple Sources

Your app will probably make use of derived data in its components – data that is composed from more than one part of the application's state. Reselect provides a clean and performant way to do this. By memoizing the functions that compose the derived data, you can avoid needlessly recalculating when the underlying data doesn't change.